我們會從最電腦系統組織開始談起。現代電腦系統主要涵蓋一個或多個 CPU,多個裝置控制器(device controller),並透過系統匯流排(bus)連接彼此與記憶體(memory)。每個controller責一類裝置(如:磁碟、音訊、圖形),有些控制器可同時連接多個裝置(例如 USB hub)。
這些裝置控制器(device controller)內部會有緩衝區(local buffer)與特殊暫存器(registers),負責與其裝置間的資料搬移。而作業系統為每個控制器提供驅動程式(device driver),讓OS能以一致的方式管理不同裝置。下面這張就是經典的PC架構。
也因此,我們可以將計算機系統可以粗略分為四個部分:
那我們反過來,以電腦系統組織的角度去看OS,大致可以分為兩種觀點:
第一,以一般使用者(User View)而言,作業系統就是操作電腦的介面,例如透過螢幕、鍵盤與滑鼠來執行應用程式。大多數使用者不會關心系統資源如何被共享或分配。因此,作業系統的設計重點在於提升使用便利性(ease of use),接著才考量效能(performance)與安全性(security)
第二,以系統觀點(System View)而言,作業系統是最貼近硬體的程式管理並分配各種硬體資源。可以再進一步細分:
OS的其中一個目的,便是要提供一個方便且高效的環境讓程式得以執行,也因此,OS對「使用者」與「程式」都提供一組共通的基本服務。這些服務可以分為「幫助使用者與應用程式的服務」與「幫助系統自身運作效率的服務」:
Table:幫助使用者與應用程式的服務
服務名稱 | 說明 |
---|---|
使用者介面 (User Interface) | 提供 GUI(圖形介面)、CLI(命令列介面),或觸控式介面,讓使用者與系統互動。 |
程式執行 (Program Execution) | 載入程式到記憶體並執行它。若程式執行完成或錯誤終止,OS 需能處理終結程序。 |
輸入/輸出操作 (I/O Operations) | 管理所有 I/O 裝置。由於使用者無法直接操作硬體,因此 OS 必須提供中介方法來進行 I/O。 |
檔案系統操作 (File-System Manipulation) | 提供建立、讀寫、搜尋、刪除檔案與資料夾的功能,也包含權限控管(誰可以存取哪些檔案)。 |
程式間通訊 (Communications) | 同一台機器程式之間需溝通,可透過「共享記憶體」或「訊息傳遞(message passing)」來完成。 |
錯誤偵測 (Error Detection) | 作業系統需持續監控錯誤,包括硬體錯誤(如記憶體或網路)、I/O 錯誤(如印表機沒紙)、或程式錯誤(如存取非法記憶體)。有時必須終止程式,有時可回傳錯誤代碼讓程式自行處理。 |
Table:幫助系統自身運作效率的服務
服務名稱 | 說明 |
---|---|
資源分配 (Resource Allocation) | 當多個程序同時執行,系統要分配 CPU、記憶體、磁碟等資源。使用排程演算法(如 CPU scheduling)與資源管理方法。 |
使用記錄與帳務 (Accounting) | 系統紀錄每個程式使用了多少資源,例如:CPU 時間、記憶體、磁碟空間等,用來做帳務分析或統計。 |
保護與安全 (Protection and Security) | 確保不同程序間無法任意干擾彼此,也防止非法使用者入侵系統。包括帳號密碼登入、權限控制、防火牆等。 |